//
// Created by xinhua on 2021/10/22.
//

#ifndef MRENDER_MATERIAL_H
#define MRENDER_MATERIAL_H

#include "Object.h"
#include "../materials/ShaderUtil.h"
#include "../materials/shader/Shader.h"
#include "../math/Color.h"
#include "IDrawUIable.h"

//默认基色
static const Color defaultBaseColor = Color(0, 0, 0, 1.0);

/**
 * 材质基类
 */
class Material : public Object, public IDrawUIable{
public:
    /**
     * shader
     */
    Shader * p_shader;
    /**
     * 顶点尺寸，点阵绘制时有效
     */
    float pointSize;
    /**
     * 是否使用顶点颜色
     */
    bool useVertexColor;
    /**
     * 基色
     */
    Color baseColor = defaultBaseColor;

public:
    void drawUI() override;

public:
    /**
     * 默认基础材质
     */
    Material();
    /**
     * 指定shader
     * @param shaderName
     */
    Material(String shaderName, const Color = defaultBaseColor);

    /**
     * 指定基色
     */
    Material(Color _baseColor);

    ~Material();
};


#endif //MRENDER_MATERIAL_H
